package com.liuugoqing.creator.builder.cat;

/**
 * 抽象构建者
 * @Author : liugq
 * @Date : 2022/7/2 11:07
 * @See : 参考类
 * @Since： JDK1.8
 * @Version : 1.0
 */
public abstract class Builder {

    protected Bike bike = new Bike();

    /**
     * 构建车架
     */
    public abstract void buildFrame();

    /**
     * 构建车座
     */
    public abstract void buildSeat();

    /**
     * 创建车
     * @return
     */
    public abstract Bike createBike();


    /**
     * 有些情况下需要简化系统结构，可以把指挥者类和抽象建造者进行结合
     *    这样做确实简化了系统结构，但同时也加重了抽象建造者类的职责，也不是太符
     * 合单一职责原则，如果construct() 过于复杂，建议还是封装到 Director 中。
     * @return
     */
    /*public Bike construct() {
        this.buildFrame();
        this.buildSeat();
        return this.createBike();
    }*/
}
